#include <CoreFoundation/CoreFoundation.h>

class BridgeStruct
{
public:
	BridgeStruct(const char* theName, const char* theType, const char* theType64, bool opaque = true)
		: name_(theName),
		type_(theType),
		type64_(theType64),
		opaque_(opaque)
	{
	}
	
protected:
	const char* name_;
	const char* type_;
	const char* type64_;
	bool opaque_;
};


class BridgeCFType
{
public:

protected:
	const char* name_;
	const char* tollfree_;
	const char* type_;
	const char* type64_;
	void (*getTypeIDFunc_)();
};


class BridgeConstant
{
public:

protected:
	const char* name_;
	const char* type_;
	const char* type64_;
	bool magicCookie_;
};


class BridgeStringConstant
{
public:

protected:
	const char* name_;
	const char* value_;
	bool nsstring_;
};


class BridgeEnum
{
public:

protected:
	const char* name_;
	const char* value_;
	const char* value64_;
	const char* valueLE_;
	const char* valueBE_;
//	bool ignore_;
//	bool suggestion_;
};


class BridgeArgument
{
public:

protected:
	const char* index_;
	const char* typeModifier_;
	const char* cArrayLengthInArg_;
	const char* cArrayLengthInRetVal_;
	const char* cArrayOfFixedLength_;
	bool cArrayDelimitedByNull_;
	bool cArrayOfVariableLength_;
	bool nullAccepted_;
	const char* type_;
	const char* type64_;
	bool functionPointer_;
	bool printfFormat_;
	const char* selOfType_;
	const char* selOfType64_;
};


class BridgeReturnValue
{
public:

protected:
	const char* cArrayLengthInArg_;
	const char* cArrayOfFixedLength_;
	bool cArrayDelimitedByNull_;
	bool cArrayOfVariableLength_;
	const char* alreadyRetained_;
	const char* type_;
	const char* type64_;
	bool functionPointer_;
};


class BridgeFunction
{
public:

protected:
	const char* name_;
	bool variadic_;
	bool inline_;
};


class BridgeFunctionAlias
{
public:

protected:
	const char* name_;
	const char* original_;
};


class BridgeInformalProtocol
{
public:

protected:
	const char* name_;
	CFMutableArrayRef methods_;
};
